Scroll to navigation

chmod(2) 2007-10-27-16:31 chmod(2)

НАЗВА

chmod, fchmod - змінює права доступу до файлу

СКЛАДОВІ

#include <sys/types.h>
#include <sys/stat.h>

int chmod(const char * path , mode_t mode );
int fchmod(int fildes , mode_t mode );

ОПИС

Змінює права доступу до файлу поданому в path або вказаному в fildes . Права визначаються за допомогою логічних операцій і/або виходячи з наступного:

S_ISUID

04000 встановити ID користувача при виконанні

S_ISGID

02000 встановити ID групи при виконанні

S_ISVTX

01000 sticky bit

S_IRUSR (S_IREAD)

00400 читання здійснює власник

S_IWUSR (S_IWRITE)

00200 запис здійснює власник

S_IXUSR (S_IEXEC)

00100 виконання/пошук здійснює власник

S_IRGRP

00040 читання здійснює група

S_IWGRP

00020 запис здійснює група

S_IXGRP

00010 виконання/пошук здійснює група

S_IROTH

00004 читання здійснюють інші

S_IWOTH

00002 запис здійснюють інші

S_IXOTH

00001 виконання/пошук здійснюють інші

Ефективний UID процесу мусить бути нуль, або відповідати власнику файлу. Якщо ефективний UID процесу не нуль і зазначена для файлу група не відповідає ефективному ID-групи процесу, або якимсь допоміжним ID-груп , то біт S_ISGID буде переставлено в положення виключено , тому процес буде завершений і повернута помилка. В залежності від файлової системи, при записі файлу, біт виконання в установках для ID-користувача та ID-групи може бути переключений в положення виключено. В деяких файлових системах лише привілейований користувач може встановити sticky bit, який має спеціальне значення. Про sticky-біт, про біти установок ID-користувача та ID-групи, для директорій, див. stat (2). В NFS файлових системах, обмеження прав доступу, зразу ж, вплине на вже відкриті файли, тому що контроль доступу проводиться на сервері, а відкриті файли обслуговуються клієнтом. Розширення прав доступу може затримувати інших клієнтів, які дозволяють кешування атрибутів.

ПОВЕРНЕНЕ ЗНАЧЕННЯ

При вдалому завершенні повертає нуль. При помилковому повертає -1 , та відповідно виставляє errno .

ПОМИЛКИ

В залежності від файлової системи, можуть бути повернені різні помилки. Більшість загальних помилок для chmod є подано нижче:

EPERM

Ефективний UID не відповідає власникові файлу, і не нуль.

EROFS

Поданий файл знаходиться на файловій системі з якої можна тільки читати.

EFAULT

path (шлях) вказує поза межі доступного вам адресного простору.

ENAMETOOLONG

path (шлях) дуже довгий.

ENOENT

Файл не існує.

ENOMEM

Ядру не достатньо доступної пам'яті.

ENOTDIR

Складова шляху path не є директорією.

EACCES

Не достатньо прав для пошуку в складових шляху path.

ELOOP

Дуже багато символічних посилань, що замикають в коло шлях path .

EIO

Сталася помилка вводу/виводу.

Загальні помилки для fchmod подано нижче:

EBADF

Дескриптор файлу fildes не вірний.

EROFS

Дивись вище.

EPERM

Дивись вище.

EIO

Дивись вище.

ВІДПОВІДНІСТЬ

Виклик chmod сумісний з SVr4, SVID, POSIX, X/OPEN, 4.4BSD. В SVr4 документовано повернення значень EINTR, ENOLINK і EMULTIHOP, але не має ENOMEM. POSIX.1 не документовано коди помилок EFAULT, ENOMEM і ELOOP, а також макроси S_IREAD, S_IWRITE і S_IEXEC. Виклик fchmod сумісний з 4.4BSD і SVr4. В SVr4 додатково документовано коди помилок EINTR і ENOLINK. POSIX вимагає функцію fchmod якщо в списку оголошено або _POSIX_MAPPED_FILES або _POSIX_SHARED_MEMORY_OBJECTS , і додатково документовано коди помилок ENOSYS і EINVAL , але не документовано EIO.

В POSIXД і X/OPEN не документовано біт sticky.

ДИВИСЬ ТАКОЖ

open(2), chown(2), execve(2), stat(2)

2007-10-27-16:31 © 2005-2007 DLOU, GNU FDL